package org.easydev.wechat.client.dto.menu;

import java.util.List;

import org.easydev.wechat.message.common.NewsInfoMsg;

import com.alibaba.fastjson.annotation.JSONField;

/**
 * <Description> 微信菜单按钮<br>
 * 
 * @author jian<br>
 */
public class WeixinButton {

    /**
     * 事件类型
     */
    private String type;

    /**
     * 菜单名称
     */
    private String name;

    /**
     * key值 <br>
     * Text:保存文字到value； <br>
     * Img、voice：保存mediaID到value； <br>
     * Video：保存视频下载链接到value； <br>
     * News：保存图文消息到news_info，同时保存mediaID到value； <br>
     * View：保存链接到url。 <br>
     * 使用API设置的自定义菜单：<br>
     * click、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、 pic_weixin、location_select：<br>
     * 保存值到key；<br>
     * view：保存链接到url <br>
     */
    private String key;

    /**
     * Text:保存文字到value； <br>
     * Img、voice：保存mediaID到value； <br>
     * Video：保存视频下载链接到value； <br>
     * News：保存图文消息到news_info，同时保存mediaID到value； <br>
     * View：保存链接到url。 <br>
     * 使用API设置的自定义菜单：<br>
     * click、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、 pic_weixin、location_select：<br>
     * 保存值到key；<br>
     * view：保存链接到url <br>
     */
    private String value;

    /**
     * 菜单url <br>
     * Text:保存文字到value； <br>
     * Img、voice：保存mediaID到value； <br>
     * Video：保存视频下载链接到value； <br>
     * News：保存图文消息到news_info，同时保存mediaID到value； <br>
     * View：保存链接到url。 <br>
     * 使用API设置的自定义菜单：<br>
     * click、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、 pic_weixin、location_select：<br>
     * 保存值到key；<br>
     * view：保存链接到url <br>
     */
    private String url;

    /**
     * 图文消息
     */
    @JSONField(name = "sub_button")
    private NewsInfoMsg newsInfo;

    /**
     * 子菜单
     */
    @JSONField(name = "sub_button")
    private List<WeixinButton> subButton;

    /**
     * get type
     * 
     * @return Returns the type.<br>
     */
    public String getType() {
        return type;
    }

    /**
     * set type
     * 
     * @param type The type to set. <br>
     */
    public void setType(String type) {
        this.type = type;
    }

    /**
     * get name
     * 
     * @return Returns the name.<br>
     */
    public String getName() {
        return name;
    }

    /**
     * set name
     * 
     * @param name The name to set. <br>
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * get key
     * 
     * @return Returns the key.<br>
     */
    public String getKey() {
        return key;
    }

    /**
     * set key
     * 
     * @param key The key to set. <br>
     */
    public void setKey(String key) {
        this.key = key;
    }

    /**
     * get url
     * 
     * @return Returns the url.<br>
     */
    public String getUrl() {
        return url;
    }

    /**
     * set url
     * 
     * @param url The url to set. <br>
     */
    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * get sub_button
     * 
     * @return Returns the sub_button.<br>
     */
    public List<WeixinButton> getSubButton() {
        return subButton;
    }

    /**
     * set sub_button
     * 
     * @param sub_button The sub_button to set. <br>
     */
    public void setSub_button(List<WeixinButton> subButton) {
        this.subButton = subButton;
    }

    /**
     * get value
     * 
     * @return Returns the value.<br>
     */
    public String getValue() {
        return value;
    }

    /**
     * set value
     * 
     * @param value The value to set. <br>
     */
    public void setValue(String value) {
        this.value = value;
    }

    /**
     * get news_info
     * 
     * @return Returns the news_info.<br>
     */
    public NewsInfoMsg getNews_info() {
        return newsInfo;
    }

    /**
     * set news_info
     * 
     * @param news_info The news_info to set. <br>
     */
    public void setNews_info(NewsInfoMsg news_info) {
        this.newsInfo = news_info;
    }

}
